package com.ruoyi.drawing.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.drawing.domain.DtsDrawingModelDocument;
import com.ruoyi.drawing.api.query.DrawingModelDocumentQuery;
import com.ruoyi.drawing.api.vo.DrawingModelDocumentVO;
import com.ruoyi.drawing.api.vo.FileVO;
import com.ruoyi.drawing.api.vo.StorageModelQuantityVO;
import org.apache.ibatis.annotations.Param;
import org.mybatis.spring.annotation.MapperScan;

import java.util.List;

/**
 * 图档中心模型文档Mapper接口
 *
 * @author ZhangYu
 * @date 2024-04-30
 */
@MapperScan
public interface DtsDrawingModelDocumentMapper extends BaseMapper<DtsDrawingModelDocument> {

    /**
     * 查询图档中心模型文档分页
     *
     * @param drawingModelDocumentQuery 图档中心模型文档查询参数
     * @return 图档中心模型文档分页
     */
    Page<DrawingModelDocumentVO> drawingModelDocumentPage(Page<DtsDrawingModelDocument> page, @Param("drawingModelDocumentQuery") DrawingModelDocumentQuery drawingModelDocumentQuery);

    /**
     * 通过文档编码查询文件分页
     *
     * @param page         分页参数
     * @param documentCode 图档编码
     * @return 文件列表
     */
    Page<FileVO> selectFilePageByDocumentCode(Page<FileVO> page, @Param("documentCode") String documentCode);

    /**
     * 查询最大图档编码
     *
     * @return 最大图档编码
     */
    String getMaxDocumentCode();

    /**
     * 查询相关编码的历史数据id（包含本id）
     *
     * @param id 文档id
     * @return 文档id和历史文档id
     */
    List<Long> selectIdListByDocumentId(Long id);

    /**
     * 获取图档中心模型文档详细信息
     *
     * @param id 唯一主键
     * @return 图档中心模型文档返回参数
     */
    DrawingModelDocumentVO getDrawingModelDocumentInfo(Long id);

    /**
     * 存储模型数量
     *
     * @return 存储模型数量
     */
    StorageModelQuantityVO storageModelQuantity();

    /**
     * 下载量排行
     *
     * @param rowsNumber 查询条数
     * @return 下载量排行
     */
    List<DrawingModelDocumentVO> downloadRankings(Integer rowsNumber);

    /**
     * 图档中心模型下载量
     *
     * @param regionId 区域id
     * @param timeList 时间列表
     * @return 图档中心模型下载量
     */
    List<Integer> regionDownloadsNum(@Param("regionId") Long regionId, @Param("timeList") List<String> timeList);

    /**
     * 图档中心模型上传量
     *
     * @param regionId 区域id
     * @param timeList 时间列表
     * @return 图档中心模型上传量
     */
    List<Integer> uploadsNum(@Param("regionId") Long regionId, @Param("timeList") List<String> timeList);

    /**
     * 图档中心模型总数
     *
     * @param regionId 区域id
     * @param timeList 时间列表
     * @return 图档中心模型总数
     */
    List<Integer> totalNum(@Param("regionId") Long regionId, @Param("timeList") List<String> timeList);

}
